package com.dycong.common.leetcode;

/**
 * 给定一个仅包含大小写字母和空格 ' ' 的字符串，返回其最后一个单词的长度。
 * <p>
 * 如果不存在最后一个单词，请返回 0 。
 * <p>
 * 说明：一个单词是指由字母组成，但不包含任何空格的字符串。
 * <p>
 * 示例:
 * <p>
 * 输入: "Hello World"
 * 输出: 5
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/length-of-last-word
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * <p>
 * 这个题比较水,主要是注意一下前后有空格这种情况。
 * 如下代码用preLong记录截止到当前字符最后一个单词的长度.
 *
 * @author dycong
 * @date 2019/11/1 9:12
 */
public class LengthOfLastWord_58 {

    public static void main(String[] args) {
        System.out.println(lengthOfLastWord(" as"));
    }

    public static int lengthOfLastWord(String s) {
        if (s == null || s.length() == 0) return 0;
        //每个单词的长度
        int slong = 0;
        // 记录最后一个word的长度
        int preLong = 0;

        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == ' ') {
                slong = 0;
            } else {
                slong++;
                preLong = slong;
            }
        }
        return preLong;
    }

    public static int lengthOfLastWord_2(String s) {

        s = s.trim();

        int lastIndex = s.lastIndexOf(" ");

        if (-1 == lastIndex) {
            return s.length();
        } else {
            return s.length() - lastIndex - 1;
        }
    }

    public static int lengthOfLastWord_3(String s) {
        if (s == null || s.length() == 0) return 0;
        int slong = -1;
        // 记录最后一个word的长度
        int preLong = 0;

        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == ' ') {
                slong = i;
            } else {
                preLong = i - slong;
            }
        }
        return preLong;
    }
}
